#include <iostream>
#include <vector>

using namespace std;
// 704.二分查找
// 给定一个 n 个元素有序的（升序）整型数组 nums 和一个目标值 target  ，
// 写一个函数搜索 nums 中的 target，如果目标值存在返回下标，否则返回 -1。
class Solution {
public:
    int search(vector<int>& nums, int target) {
        int low = 0, high = nums.size() - 1;
        while(low <= high) {
            int mid = low + (high - low) / 2;
            if(nums[mid] == target)
                return mid;
            else if(nums[mid] < target)
                low = mid+1;
            else
                high = mid-1;
        }
        return -1;
    }
};
int main() {
    vector<int> nums1 = {-1,0,3,5,9,12};
    std::cout << Solution().search(nums1,9) << std::endl; // 4

    vector<int> nums2 = {-1,0,3,5,9,12};
    std::cout << Solution().search(nums2,2) << std::endl; // -1
    return 0;
}
